﻿
Imports System.IO

Public MustInherit Class ProcesadorComun
    Inherits SubprogramasComunes
    Protected Nombre As String
    Protected Ejecutable As String


    Public ReadOnly Property GetNombreCompresor As String
        Get
            Return Nombre
        End Get
    End Property

    Protected Function BuscaEjecutable(ruta() As String, nombreArchivo As String) As Boolean
        Dim rutas As String = ""
        For Each rutaActual As String In ruta
            If My.Computer.FileSystem.DirectoryExists(rutaActual) Then
                For Each archivo In My.Computer.FileSystem.GetFiles(rutaActual, FileIO.SearchOption.SearchAllSubDirectories)
                    If [String].Equals(My.Computer.FileSystem.GetName(archivo), nombreArchivo, StringComparison.CurrentCultureIgnoreCase) Then
                        Ejecutable = archivo
                        Return True
                    End If
                Next
            End If
            rutas += ", " & rutaActual
        Next
        Throw New Exception("El ejecutable """ & nombreArchivo & """ no se encuentra en ninguno de los subdirectorios " & rutas)
    End Function

    Protected Shared Function GeneraParametros(plantilla As String,
                                               inData As String,
                                               outData As String,
                                               ejecutable As String) As String
        Dim partes() As String = Split(plantilla, "%")
        Dim output As String = Nothing

        For Each parte As String In partes
            Select Case parte
                Case "in"
                    output += """" & inData & """"
                Case "out"
                    output += """" & outData & """"
                Case "exec"
                    output += """" & ejecutable & """"
                Case Else
                    output = output & parte
            End Select
        Next

        Return output
    End Function
End Class


